package com.briup.es.config.auth;

import com.briup.es.domain.bean.User;

/**
 * 基于ThreadLocal存储的当前登录用户的信息
 */
public class UserDetails {
    private static final ThreadLocal<User> THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 将当前登录用户的对象存入ThreadLocal中
     *
     * @param user 当前登录用户
     */
    public static void setCurrentUser(User user) {
        THREAD_LOCAL.set(user);
    }

    /**
     * 获取当前登录用户的对象，通过线程进行识别
     *
     * @return 当前登录用户对象
     */
    public static User currentUser() {
        return THREAD_LOCAL.get();
    }

    /**
     * 获取当前用户的id
     *
     * @return id
     */
    public static Integer userId() {
        return currentUser().getId();
    }

    /**
     * 获取当前登录用户的用户名
     *
     * @return 用户名
     */
    public static String username() {
        return currentUser().getUsername();
    }

    /**
     * 清空ThreadLocal容器
     */
    public static void clear() {
        THREAD_LOCAL.remove();
    }
}
